﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Linq;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using DAL;
using BLL;
using NLog;

namespace QLTTTH
{
    public partial class UCKhoaHoc : DevExpress.XtraEditors.XtraUserControl
    {

        protected Logger logger = LogManager.GetCurrentClassLogger();
        public UCKhoaHoc()
        {
            InitializeComponent();
        }

        private void UCKhoaHoc_Load(object sender, EventArgs e)
        {
            LoadDsKhoaHoc();
            grvKhoaHoc.OptionsSelection.MultiSelect = true;
        }

        private void LoadDsKhoaHoc()
        {
            var aResult = KhoaHocManager.LayDanhSachKhoaHoc();
            if (aResult.Success)
                dgvDanhSach.DataSource = aResult.Result;
            else
                Log(aResult);
        }

        private void Log(ActionResult aResult)
        {
            foreach (var ex in aResult.Exceptions)
            {
                logger.Error(ex);
            }
        }

        private void btnChiTiet_LinkClicked(object sender, DevExpress.XtraNavBar.NavBarLinkEventArgs e)
        {
            logger.Info("Chọn chức năng xem chi tiết khóa học");
            var frm = new frmThongTinKhoaHoc();
            frm.FillControl(GetKhoaHocListView());
            frm.btnLuu.Enabled = false;
            frm.ShowDialog();
        }

        private KhoaHoc GetKhoaHocListView()
        {
            var kh = new KhoaHoc();
            kh.MaKH = int.Parse(grvKhoaHoc.GetFocusedRowCellValue("MaKH").ToString());
            kh.MaMH = int.Parse(grvKhoaHoc.GetFocusedRowCellValue("MaMH").ToString());
            kh.TenKH = grvKhoaHoc.GetFocusedRowCellValue("TenKH").ToString();
            kh.ThoiGianBD = DateTime.Parse(grvKhoaHoc.GetFocusedRowCellValue("ThoiGianBD").ToString());
            kh.ThoiGianKT = DateTime.Parse(grvKhoaHoc.GetFocusedRowCellValue("ThoiGianKT").ToString());

            return kh;
        }

        private void btnThem_LinkClicked(object sender, DevExpress.XtraNavBar.NavBarLinkEventArgs e)
        {
            logger.Info("Chọn chức năng thêm khóa học");
            var frm = new frmThongTinKhoaHoc();
            frm.sendData = new frmThongTinKhoaHoc.SendData(ThemKhoaHoc);
            frm.ShowDialog();
        }

        private void ThemKhoaHoc(KhoaHoc kh)
        {
            var aResult = KhoaHocManager.ThemKhoaHoc(kh);
            if (aResult.Success)
            {
                XtraMessageBox.Show("Thêm khóa học mới thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                LoadDsKhoaHoc();
            }
            else
            {
                Log(aResult);
                XtraMessageBox.Show("Thêm khóa học mới không thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void btnXoa_LinkClicked(object sender, DevExpress.XtraNavBar.NavBarLinkEventArgs e)
        {
            logger.Info("Chọn chức năng xóa khóa học");

            if (XtraMessageBox.Show("Bạn có muốn xóa những khóa học này", "Thông báo", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes)
            {
                int maKH;

                for (int i = 0; i < grvKhoaHoc.RowCount; i++)
                {
                    if (grvKhoaHoc.IsRowSelected(i))
                    {
                        maKH = int.Parse(grvKhoaHoc.GetRowCellDisplayText(i, "MaKH").ToString());
                        var aResult = KhoaHocManager.XoaKhoaHoc(maKH);
                        if (!aResult.Success)
                        {
                            Log(aResult);
                            XtraMessageBox.Show("Xóa khóa học không thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                            return;
                        }
                    }
                }
                XtraMessageBox.Show("Xóa khóa học thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                grvKhoaHoc.DeleteSelectedRows();

            }
        }

        private void btnCapNhat_LinkClicked(object sender, DevExpress.XtraNavBar.NavBarLinkEventArgs e)
        {
            logger.Info("Chọn chức năng cập nhật khóa học");

            var frm = new frmThongTinKhoaHoc();
            frm.FillControl(GetKhoaHocListView());
            frm.sendData = new frmThongTinKhoaHoc.SendData(CapNhatKhoaHoc);
            frm.ShowDialog();
        }

        private void CapNhatKhoaHoc(KhoaHoc kh)
        {
            var aResult = KhoaHocManager.CapNhatKhoaHoc(kh);
            if (aResult.Success)
            {
                XtraMessageBox.Show("Cập nhật thông tin khóa học thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                grvKhoaHoc.SetFocusedRowCellValue("MaMH", kh.MaMH);
                grvKhoaHoc.SetFocusedRowCellValue("TenKH", kh.TenKH);
                grvKhoaHoc.SetFocusedRowCellValue("ThoiGianBD", kh.ThoiGianBD);
                grvKhoaHoc.SetFocusedRowCellValue("ThoiGianKT", kh.ThoiGianKT);

            }
            else
            {
                Log(aResult);
                XtraMessageBox.Show("Cập nhật thông tin khóa học không thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void btnTimKiem_LinkClicked(object sender, DevExpress.XtraNavBar.NavBarLinkEventArgs e)
        {
            logger.Info("Chọn chức năng tìm kiếm khóa học");
            this.grvKhoaHoc.ShowFindPanel();
        }



    }
}
